package com.updateeproject.response;

/***
 * //服务器返回结果正常（服务器只要能受理这个请求，status都是200 就是success），返回一个值；异常返回别的值
 * 如果我们的业务逻辑中有任何错误，那应该通过业务逻辑的错误标识方式去做，那这个CommonReturnType就是用来解决这个方式的
 */
public class CommonReturnType {
    //表明服务器对应请求的处理结果“success”或“fail” 光指请求成功与否？？
    private String status;
    //若status=success 则data就能返回前端需要的json数据
    //若status=fail 则data内使用通用的错误码格式，是为了让前端能获取到有意义的错误信息
    //3-3 00：40 前端就可以简单地判定，当status=fail时，对应取我的data errMsg的一个值就好了

    /**
     * 常见方法：3-3  1：22
     * 首先 定义出来通用的错误形式：建包error
     * 在一个可视化的界面里，完整地，从上到下地看到一个完整地对应的一个描述，而并非依赖于我写一大堆注释说。/。’；。/
     * 然后 声明一个interface CommonError
     */
    //若status=fail 将我的data定义成一个固定的错误码的格式，比如说我的errCode是多少？这个errCode的描述是什么？
    //
    private Object data;//也是引用数据类型  传进来的那个userVO(对象)当成“值"，变成这个类的对象的属性（成员变量的值）了

    // 早就该问了************传过来的是对象，怎么变成json文件上的呀，json文件是怎么展示的啊*********
    //定义一个通用的创建方法，意义是说：当我的controller完成处理，调用对应的create方法，如果不带任何status的话，所对应的status就是success
    public static CommonReturnType create(Object result) {
        //这个成员方法把自己的类当成引用数据类型作为返回值类型，返回这个类的一个对象，当然这对象是new出来的
        return CommonReturnType.create(result, "success");   //半形半实也行？？  其实在方法内部，传进来就意味着在使用实参                                                      //为什么下面重载了，这儿也能用呢？？这儿用的是下面重载之后的方法
    }

    //这个跟构造方法的思想差不多，搞出了自己类的一个对象
    public static CommonReturnType create(Object result, String status) {
        CommonReturnType type = new CommonReturnType();

        type.setData(result);

        type.setStatus(status);

        return type;

        //方法的意义是说，当我的Controller完成了处理，我调用对应的create方法，
        // 如果它不带任何status,对应的status就是"success"，一定程度上写死了

    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public Object getData() {
        return data;
    }

    public void setData(Object data) {
        this.data = data;
    }
}
